package exception;

/**
 * try{
 *   可能出现异常的代码
 * }catch(异常类型 异常的变量名){
 *   异常处理代码
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        try {//包裹可能会出现问题的代码
            //String str = null;
            //String str = "";
            String str = "a";
            System.out.println(str.length());
            System.out.println(str.charAt(0));
            //这里执行时,一定会出现数字格式异常
            System.out.println(Integer.parseInt(str));
            //try语句块中某处出错了,这句代码之后的内容不会执行
            System.out.println("老安到此一游");
// 选中要注释的代码,ctrl+/ 快速注释
        } catch (NullPointerException e) {
            //只有try中出现了空指针异常,才会执行这部分代码
            System.out.println("出现了空指针,并在这里得到了解决");
            //catch可以定义多个,针对不同的异常可以有不同的处理方案,此时,可以分别捕获分别处理
        } catch (StringIndexOutOfBoundsException e) {
            System.out.println("出现了字符串下标越界异常,并在这里得到了解决");
            //直接捕获异常超类,那么try中不论出现什么异常,都可以进行捕获,经常用来兜底
        } catch (Exception e) {
            System.out.println("出现了异常,并在这里得到了解决");
        }
        //合并捕获异常,当不同的异常处理手段相同时,可以使用这种方式
        //}catch (NullPointerException|StringIndexOutOfBoundsException e){

        System.out.println("程序结束了");
    }
}
